package com.xoa.controller.rms.file;

import com.xoa.model.enclosure.Attachment;
import com.xoa.model.rms.RmsFileWithBLOBs;
import com.xoa.model.rms.RmsRollWithBLOBs;
import com.xoa.model.users.Users;
import com.xoa.service.rms.RmsFileService;
import com.xoa.util.CookiesUtil;
import com.xoa.util.ToJson;
import com.xoa.util.common.session.SessionUtils;
import com.xoa.util.page.PageParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Created by Administrator on 2017/12/25.
 */
@Controller
@RequestMapping("/rmsFile")
public class RmsFileController {

    @Autowired
    private RmsFileService rmsFileService;

    /**
     * 作者: 张航宁
     * 日期: 2017/12/25
     * 说明: 文件管理主页
     */
    @RequestMapping("/index")
    public String toIndex() {
        return "app/rms/file/index";
    }

    /**
     * 作者: 张航宁
     * 日期: 2017/12/25
     * 说明: 文件管理添加页面
     */
    @RequestMapping("/toAdd")
    public String toAddPage() {
        return "app/rms/file/addRmsFile";
    }


    /**
     * 作者: 张航宁
     * 日期: 2017/12/25
     * 说明: 文件管理页面
     */
    @RequestMapping("/toManage")
    public String toManage() {
        return "app/rms/file/manageRmsFile";
    }

    /**
     * 作者: 张航宁
     * 日期: 2017/12/25
     * 说明: 文件管理查询页面
     */
    @RequestMapping("/toQuery")
    public String toQuery() {
        return "app/rms/file/queryRmsFile";
    }

    /**
     * 作者: 张航宁
     * 日期: 2018/1/2
     * 说明: 导入页面
     */
    @RequestMapping("/toImport")
    public String toImport() {
        return "app/rms/file/import";
    }

    /**
     * 作者: 张航宁
     * 日期: 2018/1/3
     * 说明:文件详情
     */
    @RequestMapping("/detail")
    public String detail() {
        return "app/rms/file/detail";
    }

    /**
     * 作者: 张航宁
     * 日期: 2018/1/3
     * 说明:已销毁文件列表
     */
    @RequestMapping("/toDestroyed")
    public String toDestroyed() {
        return "app/rms/file/destroyed";
    }

    /**
     * 作者: 张航宁
     * 日期: 2017/12/25
     * 说明: 保存接口
     */
    @ResponseBody
    @RequestMapping("/save")
    public ToJson<RmsFileWithBLOBs> save(RmsFileWithBLOBs rmsFileWithBLOBs, HttpServletRequest request) {
        return rmsFileService.save(rmsFileWithBLOBs, request);
    }

    /**
     * 作者: 张航宁
     * 日期: 2017/12/25
     * 说明: 更新接口
     */
    @ResponseBody
    @RequestMapping("/update")
    public ToJson<RmsFileWithBLOBs> update(RmsFileWithBLOBs rmsFileWithBLOBs, HttpServletRequest request) {
        return rmsFileService.update(rmsFileWithBLOBs, request);
    }

    /**
     * 作者: 张航宁
     * 日期: 2017/12/25
     * 说明: 销毁接口
     */
    @ResponseBody
    @RequestMapping("/destroy")
    public ToJson<RmsFileWithBLOBs> destroy(String fileIds, HttpServletRequest request) {
        return rmsFileService.destroy(fileIds, request);
    }

    /**
     * 作者: 张航宁
     * 日期: 2017/12/25
     * 说明: 查询接口
     */
    @ResponseBody
    @RequestMapping("/query")
    public ToJson<RmsFileWithBLOBs> query(RmsFileWithBLOBs rmsFileWithBLOBs, PageParams pageParams) {
        return rmsFileService.query(rmsFileWithBLOBs, pageParams);
    }

    @ResponseBody
    @RequestMapping("/leaderQuery")
    public ToJson<RmsFileWithBLOBs> leaderQuery(HttpServletRequest request,RmsFileWithBLOBs rmsFileWithBLOBs,String room, String roll,  String rollName, String file,  PageParams pageParams) {
        String sendUnit=request.getParameter("sendUnit");
        return rmsFileService.leaderQuery(rmsFileWithBLOBs,room,roll,sendUnit,rollName, file,pageParams);
    }

    /**
     * 作者: 张航宁
     * 日期: 2017/12/26
     * 说明: 根据id查询
     */
    @ResponseBody
    @RequestMapping("/selectById")
    public ToJson<RmsFileWithBLOBs> selectById(Integer fileId, HttpServletRequest request) {
        return rmsFileService.selectById(fileId, request);
    }

    /**
     * 作者: 张航宁
     * 日期: 2017/12/28
     * 说明: 导入功能
     */
    @ResponseBody
    @RequestMapping("/import")
    public ToJson<RmsFileWithBLOBs> importFile(HttpServletRequest request, HttpServletResponse response, MultipartFile file) {
        return rmsFileService.importFile(request, response, file);
    }

    /**
     * 作者: 张航宁
     * 日期: 2018/1/2
     * 说明: 批量删除接口
     */
    @ResponseBody
    @RequestMapping("/delete")
    public ToJson<RmsFileWithBLOBs> deleteFiles(String fileIds) {
        return rmsFileService.deleteFiles(fileIds);
    }

    /**
     * 作者: 张航宁
     * 日期: 2018/1/2
     * 说明: 还原文件接口 【销毁后还原】
     */
    @ResponseBody
    @RequestMapping("/restore")
    public ToJson<RmsFileWithBLOBs> restore(String fileIds) {
        return rmsFileService.restore(fileIds);
    }

    /**
     * 作者: 张航宁
     * 日期: 2018/1/3
     * 说明: 批量移卷接口
     */
    @ResponseBody
    @RequestMapping("/updateRollBath")
    public ToJson<RmsFileWithBLOBs> updateRollBath(String fileIds, Integer rollId) {
        return rmsFileService.updateRollBath(fileIds, rollId);
    }

    /**
     * 作者: 张航宁
     * 日期: 2018/1/3
     * 说明: 导出接口
     */
    @ResponseBody
    @RequestMapping("/export")
    public ToJson<RmsFileWithBLOBs> export(String fileIds, HttpServletRequest request, HttpServletResponse response) {
        return rmsFileService.export(fileIds, request, response);
    }

    /**
     * 作者: 张航宁
     * 日期: 2018/1/22
     * 说明: 工作流公文等表单生成html  用于归档
     */
    @ResponseBody
    @RequestMapping("/createFormHtml")
    public ToJson<Attachment> createFormHtml(String htmlContent, String module, HttpServletResponse response, HttpServletRequest request, String typeFlag) {
        return rmsFileService.createFormHtml(htmlContent, module, response, request,typeFlag);
    }

    /**
     * @作者: 张航宁
     * @时间: 2019/8/8
     * @说明: 获取流程中的来文单位 文号 文件标题 案卷数据
     */
    @ResponseBody
    @RequestMapping("/getFlowData")
    public ToJson<RmsFileWithBLOBs> getFlowData(Integer runId){
        return rmsFileService.getFlowData(runId);
    }
    /**
     * lr
     * 查看当前用户是否有权限查看详情
     * @param request
     * @param runId
     * @return
     */
    @RequestMapping("/viewDetails")
    @ResponseBody
    public ToJson viewDetails(HttpServletRequest request,Integer runId){
        Cookie redisSessionCookie = CookiesUtil.getCookieByName(request, "redisSessionId");
        Users user=SessionUtils.getSessionInfo(request.getSession(), Users.class, new Users(),redisSessionCookie);
        return rmsFileService.viewDetails(user,runId);

    }
}
